{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 音乐网站用户流失预测数据探索\n",
    "by Johnkle  \n",
    "2019/08/09"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 大体思路 \n",
    "把该问题转化为一个CVR问题。  \n",
    "构造特征，把协同过滤的推荐度作为特征。  \n",
    "1.user_based协同过滤需要user-user相似度矩阵和user-item行为矩阵，user-user有两种相似度（user信息和eventForUser分别计算出两种相似度），从而根据user_based协同过滤构造两个特征userReco。  \n",
    "2.item_based协同过滤需要item-item相似度矩阵和user-item行为矩阵，item-item有两种相似度（item信息和userForEvent分别计算出两种相似度），从而根据item_based协同过滤构造两个特征itemReco。  \n",
    "3.构造用户活跃度userPop特征，计算每个user评分过的item的数量，user评分过的item数量越多，用户越活跃。  \n",
    "4.构造item热度itemPop特征，计算每个item被评分过的user的数量，item被评分过的user数量越多，item热度越高。  \n",
    "把以上构造出的6个特征加入到train数据集中，形成新的数据集，作为分类模型的输入。  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "基于以上想法，本项目的songs和members数据集被用来计算user-user相似度和item-item相似度，从而构造相应的特征。  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "冷启动问题  \n",
    "当一个新user出现，可以根据user信息得到userReco  \n",
    "当一个新item出现，可以根据item信息得到itemReco"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import scipy as sp\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. train数据探索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>msno</th>\n",
       "      <th>song_id</th>\n",
       "      <th>source_system_tab</th>\n",
       "      <th>source_screen_name</th>\n",
       "      <th>source_type</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=</td>\n",
       "      <td>BBzumQNXUHKdEBOB7mAJuzok+IJA1c2Ryg/yzTF6tik=</td>\n",
       "      <td>explore</td>\n",
       "      <td>Explore</td>\n",
       "      <td>online-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=</td>\n",
       "      <td>bhp/MpSNoqoxOIB+/l8WPqu6jldth4DIpCm3ayXnJqM=</td>\n",
       "      <td>my library</td>\n",
       "      <td>Local playlist more</td>\n",
       "      <td>local-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=</td>\n",
       "      <td>JNWfrrC7zNN7BdMpsISKa4Mw+xVJYNnxXh3/Epw7QgY=</td>\n",
       "      <td>my library</td>\n",
       "      <td>Local playlist more</td>\n",
       "      <td>local-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=</td>\n",
       "      <td>2A87tzfnJTSWqD7gIZHisolhe4DMdzkbd6LzO1KHjNs=</td>\n",
       "      <td>my library</td>\n",
       "      <td>Local playlist more</td>\n",
       "      <td>local-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=</td>\n",
       "      <td>3qm6XTZ6MOCU11x8FIVbAGH5l5uMkT3/ZalWG1oo2Gc=</td>\n",
       "      <td>explore</td>\n",
       "      <td>Explore</td>\n",
       "      <td>online-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                           msno  \\\n",
       "0  FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=   \n",
       "1  Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=   \n",
       "2  Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=   \n",
       "3  Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=   \n",
       "4  FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=   \n",
       "\n",
       "                                        song_id source_system_tab  \\\n",
       "0  BBzumQNXUHKdEBOB7mAJuzok+IJA1c2Ryg/yzTF6tik=           explore   \n",
       "1  bhp/MpSNoqoxOIB+/l8WPqu6jldth4DIpCm3ayXnJqM=        my library   \n",
       "2  JNWfrrC7zNN7BdMpsISKa4Mw+xVJYNnxXh3/Epw7QgY=        my library   \n",
       "3  2A87tzfnJTSWqD7gIZHisolhe4DMdzkbd6LzO1KHjNs=        my library   \n",
       "4  3qm6XTZ6MOCU11x8FIVbAGH5l5uMkT3/ZalWG1oo2Gc=           explore   \n",
       "\n",
       "    source_screen_name      source_type  target  \n",
       "0              Explore  online-playlist       1  \n",
       "1  Local playlist more   local-playlist       1  \n",
       "2  Local playlist more   local-playlist       1  \n",
       "3  Local playlist more   local-playlist       1  \n",
       "4              Explore  online-playlist       1  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dpath = \"./data/\"\n",
    "train = pd.read_csv(dpath+\"train.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 7377418 entries, 0 to 7377417\n",
      "Data columns (total 6 columns):\n",
      "msno                  object\n",
      "song_id               object\n",
      "source_system_tab     object\n",
      "source_screen_name    object\n",
      "source_type           object\n",
      "target                int64\n",
      "dtypes: int64(1), object(5)\n",
      "memory usage: 337.7+ MB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "30755"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#用户的数量\n",
    "len(train[\"msno\"].unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "359966"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#歌曲的数量\n",
    "len(train[\"song_id\"].unique())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 样本分布\n",
    "样本分布均衡，不需要进行下采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.target);\n",
    "plt.xlabel('target');\n",
    "plt.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看每个特征的缺省值数目，缺省值用众数填充"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "msno                       0\n",
       "song_id                    0\n",
       "source_system_tab      24849\n",
       "source_screen_name    414804\n",
       "source_type            21539\n",
       "target                     0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.apply(lambda x:sum(x.isnull()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 特征分布\n",
    "对于出现频次比较高的特征做单独处理，出现频次比较低的特征归类为其他"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### source_system_tab分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.source_system_tab);\n",
    "plt.xlabel(\"source_system_tab\");\n",
    "plt.ylabel(\"Number of occurrences\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "source_system_tab不同取值出现的频次"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "my library      3684730\n",
       "discover        2179252\n",
       "search           623286\n",
       "radio            476701\n",
       "listen with      212266\n",
       "explore          167949\n",
       "notification       6185\n",
       "settings           2200\n",
       "Name: source_system_tab, dtype: int64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[\"source_system_tab\"].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### source_screen_name分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.source_screen_name);\n",
    "plt.xlabel(\"source_screen_name\");\n",
    "plt.ylabel(\"Number of occurrences\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "source_screen_name不同取值出现频次，频次低于100000次合并为其他"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Local playlist more     3228202\n",
       "Online playlist more    1294689\n",
       "Radio                    474467\n",
       "Album more               420156\n",
       "Search                   298487\n",
       "Artist more              252429\n",
       "Discover Feature         244246\n",
       "Discover Chart           213658\n",
       "Others profile more      201795\n",
       "Discover Genre            82202\n",
       "My library                75980\n",
       "Explore                   72342\n",
       "Unknown                   54170\n",
       "Discover New              15955\n",
       "Search Trends             13632\n",
       "Search Home               13482\n",
       "My library_Search          6451\n",
       "Self profile more           212\n",
       "Concert                      47\n",
       "Payment                      12\n",
       "Name: source_screen_name, dtype: int64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[\"source_screen_name\"].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### source_type分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.source_type);\n",
    "plt.xlabel(\"source_type\");\n",
    "plt.ylabel(\"Number of occurrences\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "source_type不同取值出现频次，频次低于200000次合并为其他"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "local-library             2261399\n",
       "online-playlist           1967924\n",
       "local-playlist            1079503\n",
       "radio                      483109\n",
       "album                      477344\n",
       "top-hits-for-artist        423614\n",
       "song                       244722\n",
       "song-based-playlist        210527\n",
       "listen-with                192842\n",
       "topic-article-playlist      11194\n",
       "artist                       3038\n",
       "my-daily-playlist             663\n",
       "Name: source_type, dtype: int64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[\"source_type\"].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. songs数据探索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>song_id</th>\n",
       "      <th>song_length</th>\n",
       "      <th>genre_ids</th>\n",
       "      <th>artist_name</th>\n",
       "      <th>composer</th>\n",
       "      <th>lyricist</th>\n",
       "      <th>language</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>CXoTN1eb7AI+DntdU1vbcwGRV4SCIDxZu+YD8JP8r4E=</td>\n",
       "      <td>247640</td>\n",
       "      <td>465</td>\n",
       "      <td>張信哲 (Jeff Chang)</td>\n",
       "      <td>董貞</td>\n",
       "      <td>何啟弘</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>o0kFgae9QtnYgRkVPqLJwa05zIhRlUjfF7O1tDw0ZDU=</td>\n",
       "      <td>197328</td>\n",
       "      <td>444</td>\n",
       "      <td>BLACKPINK</td>\n",
       "      <td>TEDDY|  FUTURE BOUNCE|  Bekuh BOOM</td>\n",
       "      <td>TEDDY</td>\n",
       "      <td>31.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>DwVvVurfpuz+XPuFvucclVQEyPqcpUkHR0ne1RQzPs0=</td>\n",
       "      <td>231781</td>\n",
       "      <td>465</td>\n",
       "      <td>SUPER JUNIOR</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>31.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>dKMBWoZyScdxSkihKG+Vf47nc18N9q4m58+b4e7dSSE=</td>\n",
       "      <td>273554</td>\n",
       "      <td>465</td>\n",
       "      <td>S.H.E</td>\n",
       "      <td>湯小康</td>\n",
       "      <td>徐世珍</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>W3bqWd3T+VeHFzHAUfARgW9AvVRaF4N5Yzm4Mr6Eo/o=</td>\n",
       "      <td>140329</td>\n",
       "      <td>726</td>\n",
       "      <td>貴族精選</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>52.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                        song_id  song_length genre_ids  \\\n",
       "0  CXoTN1eb7AI+DntdU1vbcwGRV4SCIDxZu+YD8JP8r4E=       247640       465   \n",
       "1  o0kFgae9QtnYgRkVPqLJwa05zIhRlUjfF7O1tDw0ZDU=       197328       444   \n",
       "2  DwVvVurfpuz+XPuFvucclVQEyPqcpUkHR0ne1RQzPs0=       231781       465   \n",
       "3  dKMBWoZyScdxSkihKG+Vf47nc18N9q4m58+b4e7dSSE=       273554       465   \n",
       "4  W3bqWd3T+VeHFzHAUfARgW9AvVRaF4N5Yzm4Mr6Eo/o=       140329       726   \n",
       "\n",
       "        artist_name                            composer     lyricist  language  \n",
       "0  張信哲 (Jeff Chang)                                  董貞          何啟弘       3.0  \n",
       "1         BLACKPINK  TEDDY|  FUTURE BOUNCE|  Bekuh BOOM        TEDDY      31.0  \n",
       "2      SUPER JUNIOR                                 NaN          NaN      31.0  \n",
       "3             S.H.E                                 湯小康          徐世珍       3.0  \n",
       "4              貴族精選                         Traditional  Traditional      52.0  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "songs = pd.read_csv(dpath + \"songs.csv\")\n",
    "songs.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2296320, 7)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "songs.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2296320"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(songs[\"song_id\"].unique())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### songs特征分布"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看songs每个特征缺省值的数目"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "composer和lyricist缺失值过多，舍弃，artist_name也舍弃？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "song_id              0\n",
       "song_length          0\n",
       "genre_ids        94116\n",
       "artist_name          0\n",
       "composer       1071354\n",
       "lyricist       1945268\n",
       "language             1\n",
       "dtype: int64"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "songs.apply(lambda x:sum(x.isnull()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "song_length是连续型特征，如何做分桶bucket？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### genre_ids分布  \n",
    "把出现频次较低的genre_ids归类为其他，低于哪个阈值可以认定为频次低，代码如何实现此操作？    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(songs.genre_ids);\n",
    "plt.xlabel(\"genre_ids\");\n",
    "plt.ylabel(\"Number of occurrences\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1046"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(songs[\"genre_ids\"].unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "465                567911\n",
       "958                176349\n",
       "2022               168870\n",
       "1609               166457\n",
       "2122               139938\n",
       "1259               101485\n",
       "921                 67578\n",
       "1152                48730\n",
       "359                 43601\n",
       "786                 42999\n",
       "726                 34969\n",
       "139                 34876\n",
       "1011                34013\n",
       "940                 33490\n",
       "1572|275            24338\n",
       "1955                20980\n",
       "691                 19472\n",
       "139|125|109         17613\n",
       "873                 17542\n",
       "437                 17212\n",
       "947                 17106\n",
       "388                 16776\n",
       "458                 15438\n",
       "444                 14859\n",
       "1616                14188\n",
       "242                 13756\n",
       "451                 13283\n",
       "880                 13059\n",
       "423                 11814\n",
       "829                 11759\n",
       "2130                11053\n",
       "1138                10770\n",
       "1180                10702\n",
       "1616|2058            9283\n",
       "893                  7527\n",
       "1152|947             7355\n",
       "864|857|850|843      6842\n",
       "409                  6519\n",
       "2072                 4987\n",
       "430                  4863\n",
       "Name: genre_ids, dtype: int64"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "songs[\"genre_ids\"].value_counts()[:40]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "artist_name,composer,lyricist都是人名，如何处理？hash？直接丢掉？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### language分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaEAAAEKCAYAAAC7c+rvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3X+8VXWd7/HXW/BX/gIUzfgRWEyllqlHpSw1vSFaA+aoY9ebXGViKjWbcgrHuWKaM5pjNk5mMUni5IhollQYEf66laLgDxB/xAlNTjKCgmZ500E/94/13bA47r3P4py99zqx38/HYz/OWp/1Xev7OWdv/bDW+u7vUkRgZmZWhq3KTsDMzNqXi5CZmZXGRcjMzErjImRmZqVxETIzs9K4CJmZWWmaVoQkzZC0WtIjVbadIykk7ZbWJelKSZ2Slkg6INd2kqTl6TUpFz9Q0tK0z5WSlOJDJM1P7edLGtxTH2ZmVo5mngldC4zvHpQ0Avgw8HQufAwwJr2mAFentkOAacAhwMHAtEpRSW2m5Par9DUVWBARY4AFab1mH2ZmVp6mFaGIuBtYW2XTFcAXgfy3ZCcC10XmXmCQpD2Bo4H5EbE2ItYB84HxadvOEXFPZN+2vQ44LnesmWl5Zrd4tT7MzKwkA1vZmaQJwO8i4uF09axiGLAyt96VYvXiXVXiAHtExCqAiFglafce+lhVL+fddtstRo0a1ePvZmZmGy1evPi5iBjaU7uWFSFJbwLOA8ZV21wlFr2I102h6D6SppBdsmPkyJEsWrSoh0ObmVmepN8WadfK0XFvA0YDD0t6ChgOPCDpzWRnJSNybYcDz/QQH14lDvBs5TJb+rk6xWsd6w0iYnpEdEREx9ChPRZyMzPrpZYVoYhYGhG7R8SoiBhFVhQOiIj/AuYAp6YRbGOBF9MltXnAOEmD04CEccC8tO0lSWPTqLhTgVtTV3OAyii6Sd3i1fowM7OSNO1ynKQbgCOA3SR1AdMi4poazecCxwKdwMvAaQARsVbSRcD9qd2FEVEZ7PBpshF42wO3pRfAJcBsSZPJRuCdWK8PMzMrj/woh/o6OjrC94TMzDaPpMUR0dFTO8+YYGZmpXERMjOz0rgImZlZaVyEzMysNC5CZmZWmpZO22Nm1i5m33Rwy/o66cT7WtZXo/lMyMzMSuMiZGZmpXERMjOz0rgImZlZaVyEzMysNC5CZmZWGhchMzMrjYuQmZmVxkXIzMxK4yJkZmalcREyM7PSuAiZmVlpXITMzKw0LkJmZlYaFyEzMyuNi5CZmZWmaUVI0gxJqyU9kotdJulxSUsk/UDSoNy2cyV1SnpC0tG5+PgU65Q0NRcfLWmhpOWSbpS0TYpvm9Y70/ZRPfVhZmblaOaZ0LXA+G6x+cC+EfEe4NfAuQCS9gZOBvZJ+3xT0gBJA4CrgGOAvYGPp7YAlwJXRMQYYB0wOcUnA+si4u3AFaldzT4a/UubmVlxTStCEXE3sLZb7GcRsT6t3gsMT8sTgVkR8UpEPAl0AgenV2dErIiIV4FZwERJAo4Ebk77zwSOyx1rZlq+GTgqta/Vh5mZlaTMe0KnA7el5WHAyty2rhSrFd8VeCFX0CrxTY6Vtr+Y2tc6lpmZlaSUIiTpPGA9cH0lVKVZ9CLem2NVy2+KpEWSFq1Zs6ZaEzMza4CWFyFJk4CPAqdERKUIdAEjcs2GA8/UiT8HDJI0sFt8k2Ol7buQXRasdaw3iIjpEdERER1Dhw7tza9pZmYFtLQISRoPfAmYEBEv5zbNAU5OI9tGA2OA+4D7gTFpJNw2ZAML5qTidQdwQtp/EnBr7liT0vIJwO2pfa0+zMysJAN7btI7km4AjgB2k9QFTCMbDbctMD8bK8C9EfGpiFgmaTbwKNllujMi4rV0nDOBecAAYEZELEtdfAmYJekrwIPANSl+DfAfkjrJzoBOBqjXh5mZlUMbr4hZNR0dHbFo0aKy0zCzPzOzb2rd4NuTTux/F3UkLY6Ijp7aecYEMzMrjYuQmZmVxkXIzMxK4yJkZmalcREyM7PSuAiZmVlpXITMzKw0LkJmZlYaFyEzMyuNi5CZmZXGRcjMzErjImRmZqVxETIzs9K4CJmZWWlchMzMrDQ9FiFJO0jaKi3/haQJkrZufmpmZralK3ImdDewnaRhwALgNODaZiZlZmbtoUgRUkS8DBwP/FtEfAzYu7lpmZlZOyhUhCS9DzgF+EmKDWxeSmZm1i6KFKHPAecCP4iIZZL2Au5oblpmZtYOejyjiYi7gLsk7ZDWVwCfbXZiZma25SsyOu59kh4FHkvr+0n6ZtMzMzOzLV6Ry3FfB44GngeIiIeBw3raSdIMSaslPZKLDZE0X9Ly9HNwikvSlZI6JS2RdEBun0mp/XJJk3LxAyUtTftcKUm97cPMzMpR6MuqEbGyW+i1ArtdC4zvFpsKLIiIMWTDvaem+DHAmPSaAlwNWUEBpgGHAAcD0ypFJbWZkttvfG/6MDOz8hQpQislvR8ISdtIOod0aa6eiLgbWNstPBGYmZZnAsfl4tdF5l5gkKQ9yc7A5kfE2ohYB8wHxqdtO0fEPRERwHXdjrU5fZiZWUmKFKFPAWcAw4Au4L1pvTf2iIhVAOnn7ik+DMifbXWlWL14V5V4b/owM7OSFBkd9xzZd4SaSdW67kW8N328saE0heySHSNHjuzhsGZm1ltFRsfNlDQotz5Y0oxe9vds5RJY+rk6xbuAEbl2w4FneogPrxLvTR9vEBHTI6IjIjqGDh26Wb+gmZkVV+Ry3Hsi4oXKSro3s38v+5sDVEa4TQJuzcVPTSPYxgIvpktp84BxqfANBsYB89K2lySNTaPiTu12rM3pw8zMSlJk+p2tJA1OxacyYq3H/STdABwB7Capi2yU2yXAbEmTgaeBE1PzucCxQCfwMtkkqUTEWkkXAfendhdGRGWww6fJRuBtD9yWXmxuH2ZmVp4iRehy4FeSbk7rJwIX97RTRHy8xqajqrQNagx2iIgZwBsu/0XEImDfKvHnN7cPMzMrR5GBCddJWgx8iOzm/vER8WjTMzMzsy1e0dmwHwfWVdpLGhkRTzctKzMzawtF7u2cRXY/51mymRJENrT5Pc1NzczMtnRFzoTOBt6R7rWYmZk1TKFpe4AXm52ImZm1nyJnQiuAOyX9BHilEoyIrzUtKzMzawtFitDT6bVNepmZmTVEkSHaXwaQtENE/LH5KZmZWbvwk1XNzKw0TXuyqpmZWU+a+WRVMzOzuooMTNjkyarAZynwZFUzM7OetPrJqmZmZhvUPROSNAD4REQ0+8mqZmbWhuqeCUXEa8DEFuViZmZtpsg9oV9K+gZwI7Dhe0IR8UDTsjIzs7ZQpAi9P/28MBcL4MjGp2NmZu2kp3tCWwFXR8TsFuVjZmZtpKd7Qq8DZ7YoFzMzazNFhmjPl3SOpBGShlReTc/MzMy2eEXuCZ2efua/GxTAXo1Px8zM2kmRWbRHtyIRMzNrP0Vm0T612qsvnUr6O0nLJD0i6QZJ20kaLWmhpOWSbkxTBCFp27TembaPyh3n3BR/QtLRufj4FOuUNDUXr9qHmZmVo8g9oYNyrw8CFwATetuhpGFk8891RMS+wADgZOBS4IqIGAOsAyanXSYD6yLi7cAVqR2S9k777QOMB74paUCa5eEq4Bhgb+DjqS11+jAzsxL0WIQi4qzc65PA/vT9CasDge0lDQTeBKwi+97RzWn7TOC4tDwxrZO2HyVJKT4rIl6JiCeBTuDg9OqMiBUR8SowC5iY9qnVh5mZlaDQoxy6eRkY09sOI+J3wL+QPTJ8FfAisBh4ISLWp2ZdZBOmkn6uTPuuT+13zce77VMrvmudPszMrAQ9DkyQ9COy0XCQFa29gV5/eVXSYLKzmNHAC8BNZJfOuqv0qRrbasWrFdZ67avlOAWYAjBy5MhqTczMrAGKDNH+l9zyeuC3EdHVhz7/B/BkRKwBkHQL2dRAgyQNTGcqw4FnUvsuYATQlS7f7QKszcUr8vtUiz9Xp49NRMR0YDpAR0dH1UJlZmZ9V+Ry3NPAwoi4KyJ+CTyfH6HWC08DYyW9Kd2nOQp4FLgDOCG1mQTcmpbnpHXS9tsjIlL85DR6bjTZJcL7gPuBMWkk3DZkgxfmpH1q9WFmZiUoUoRuAl7Prb+WYr0SEQvJBgc8ACxNOUwHvgR8XlIn2f2ba9Iu1wC7pvjnganpOMvILgs+CvwUOCMiXktnOWcC88ieADs7taVOH2ZmVoIil+MGplFmAETEq339fk1ETAOmdQuvIBvZ1r3tn4ATaxznYuDiKvG5wNwq8ap9mJlZOYqcCa2RtOF7QZImkt1fMTMz65MiZ0KfAq5PD7aDbEBAn2ZMMDMzg2Jzx/2GbCDBjoAi4qXmp2VmZu2gyNxx/yRpUET8ISJekjRY0ldakZyZmW3ZitwTOiYiXqisRMQ64NjmpWRmZu2iSBEaIGnbyoqk7YFt67Q3MzMrpMjAhO8BCyR9l2yam9PZOKGomZlZrxUZmPBVSUvIptsBuCgi5jU3LTMzawdFzoQAHgS2JjsTerB56ZiZWTspMjruJLI52U4ATgIWSjqh/l5mZmY9K3ImdB5wUESsBpA0FPg5Gx8OZ2Zm1itFRsdtVSlAyfMF9zMzM6uryJnQTyXNA25I639NlclBzczMNleR0XF/L+l44ANkTyedHhE/aHpmZma2xSs0Oi4ibgFuaXIuZmbWZnxvx8zMSuMiZGZmpalZhCQtSD8vbV06ZmbWTurdE9pT0uHABEmzyAYlbBARDzQ1MzMz2+LVK0LnA1OB4cDXum0L4MhmJWVmZu2hZhGKiJuBmyX9n4i4qIU59WsH/v11Leln8WV+grqZbfmKfE/oIkkTgMNS6M6I+HFz0zIzs3ZQZALTfwbOBh5Nr7NTrNckDZJ0s6THJT0m6X2ShkiaL2l5+jk4tZWkKyV1Sloi6YDccSal9sslTcrFD5S0NO1zpSSleNU+zMysHEWGaH8E+HBEzIiIGcD4FOuLfwV+GhHvBPYDHiO7/7QgIsYAC9I6wDHAmPSaAlwNWUEBpgGHAAcD03JF5erUtrLf+BSv1YeZmZWg6PeEBuWWd+lLh5J2Jru0dw1ARLwaES8AE9n4xNaZwHFpeSJwXWTuBQZJ2hM4GpgfEWsjYh0wHxiftu0cEfdERADXdTtWtT7MzKwERabt+WfgQUl3kA3TPgw4tw997gWsAb4raT9gMdnlvj0iYhVARKyStHtqPwxYmdu/K8XqxbuqxKnTh5mZlaDHM6GIuAEYSzZ33C3A+yJiVh/6HAgcAFwdEfsDf6T+ZTFViUUv4oVJmiJpkaRFa9as2ZxdzcxsMxS6HBcRqyJiTkTcGhH/1cc+u4CuiFiY1m8mK0rPpktppJ+rc+1H5PYfDjzTQ3x4lTh1+thEREyPiI6I6Bg6dGivfkkzM+tZy+eOS0VspaR3pNBRZKPu5gCVEW6TgFvT8hzg1DRKbizwYrqkNg8YJ2lwGpAwDpiXtr0kaWwaFXdqt2NV68PMzEpQ6FEOTXAWcL2kbYAVwGlkBXG2pMnA08CJqe1c4FigE3g5tSUi1kq6CLg/tbswItam5U8D1wLbA7elF8AlNfowM7MS1C1CkrYClkTEvo3sNCIeAjqqbDqqStsAzqhxnBnAjCrxRcAbco6I56v1YWZm5ah7OS4iXgceljSyRfmYmVkbKXI5bk9gmaT7yEayARARE5qWlZmZtYUiRejLTc/CzMzaUpEJTO+S9FZgTET8XNKbgAHNT83MzLZ0RSYw/STZd3m+nULDgB82MykzM2sPRb4ndAZwKPB7gIhYDni6GzMz67MiReiViHi1siJpIJs5DY6ZmVk1RYrQXZL+Adhe0oeBm4AfNTctMzNrB0WK0FSyWa+XAn9LNoPBPzYzKTMzaw9FRse9LmkmsJDsMtwTaRYDMzOzPumxCEn6CPAt4Ddkj0kYLelvI+K2+nuamZnVV+TLqpcDH4qITgBJbwN+wsZJQc3MzHqlyD2h1ZUClKygxnN4zMzMNkfNMyFJx6fFZZLmArPJ7gmdyMbHJ5iZmfVavctxf5lbfhY4PC2vAQY3LSMzM2sbNYtQRJzWykTMzKz9FBkdN5rsSaij8u39KAczM+urIqPjfghcQzZLwuvNTcfMzNpJkSL0p4i4sumZmJlZ2ylShP5V0jTgZ8ArlWBEPNC0rMzMrC0UKULvBj4BHMnGy3GR1s3MzHqtSBH6GLBX/nEOZmZmjVBkxoSHgUGN7ljSAEkPSvpxWh8taaGk5ZJulLRNim+b1jvT9lG5Y5yb4k9IOjoXH59inZKm5uJV+zAzs3IUKUJ7AI9LmidpTuXVgL7PBh7LrV8KXBERY4B1wOQUnwysi4i3A1ekdkjaGzgZ2AcYD3wzFbYBwFXAMcDewMdT23p9mJlZCYpcjpvW6E4lDQc+AlwMfF6SyO4x/c/UZCZwAXA1MDEtA9wMfCO1nwjMiohXgCcldQIHp3adEbEi9TULmCjpsTp9mJlZCYo8T+iuJvT7deCLwE5pfVfghYhYn9a7gGFpeRiwMuWyXtKLqf0w4N7cMfP7rOwWP6SHPszMrAQ9Xo6T9JKk36fXnyS9Jun3ve1Q0kfJZuZenA9XaRo9bGtUvFqOUyQtkrRozZo11ZqYmVkDFDkT2im/Luk4Nl726o1DgQmSjgW2A3YmOzMaJGlgOlMZDjyT2ncBI4AuSQOBXYC1uXhFfp9q8efq9LGJiJgOTAfo6OjwU2TNzJqkyMCETUTED+nDd4Qi4tyIGB4Ro8gGFtweEacAdwAnpGaTgFvT8py0Ttp+e3q8+Bzg5DR6bjQwBriP7DETY9JIuG1SH3PSPrX6MDOzEhSZwPT43OpWQAc1LmP10ZeAWZK+AjxINl8d6ed/pIEHa8mKChGxTNJs4FFgPXBGRLyWcj4TmAcMAGZExLIe+jAzsxIUGR2Xf67QeuApspFpfRYRdwJ3puUVVLnMFxF/InuQXrX9LyYbYdc9PheYWyVetQ8zMytHkXtCfq6QmZk1Rb3He59fZ7+IiIuakI+ZmbWRemdCf6wS24FsloFdARchMzPrk3qP9768sixpJ7Jpdk4DZgGX19rPzMysqLr3hCQNAT4PnEI2zc0BEbGuFYmZmdmWr949ocuA48m+tPnuiPhDy7IyM7O2UO/Lql8A3gL8I/BMbuqel/oybY+ZmVlFvXtCmz2bgpmZ2eZwoTEzs9K4CJmZWWlchMzMrDQuQmZmVhoXITMzK42LkJmZlcZFyMzMSuMiZGZmpXERMjOz0rgImZlZaVyEzMysNC5CZmZWGhchMzMrjYuQmZmVpuVFSNIISXdIekzSMklnp/gQSfMlLU8/B6e4JF0pqVPSEkkH5I41KbVfLmlSLn6gpKVpnyslqV4fZmZWjjLOhNYDX4iIdwFjgTMk7Q1MBRZExBhgQVoHOAYYk15TgKthw6PHpwGHAAcD03JF5erUtrLf+BSv1YeZmZWg5UUoIlZFxANp+SXgMWAYMBGYmZrNBI5LyxOB6yJzLzBI0p7A0cD8iFgbEeuA+cD4tG3niLgnIgK4rtuxqvVhZmYlKPWekKRRwP7AQmCPiFgFWaECdk/NhgErc7t1pVi9eFeVOHX6MDOzEpRWhCTtCHwf+FxE/L5e0yqx6EV8c3KbImmRpEVr1qzZnF3NzGwzlFKEJG1NVoCuj4hbUvjZdCmN9HN1incBI3K7Dwee6SE+vEq8Xh+biIjpEdERER1Dhw7t3S9pZmY9KmN0nIBrgMci4mu5TXOAygi3ScCtufipaZTcWODFdCltHjBO0uA0IGEcMC9te0nS2NTXqd2OVa0PMzMrwcAS+jwU+ASwVNJDKfYPwCXAbEmTgaeBE9O2ucCxQCfwMnAaQESslXQRcH9qd2FErE3LnwauBbYHbksv6vRhZmYlaHkRiohfUP2+DcBRVdoHcEaNY80AZlSJLwL2rRJ/vlofZmZWDs+YYGZmpXERMjOz0rgImZlZaVyEzMysNC5CZmZWGhchMzMrjYuQmZmVxkXIzMxK4yJkZmalKWPaHuujpy98d8v6Gnn+0pb1ZWbtx2dCZmZWGp8J2Z+1uw47vGV9HX73XS3ry6xd+EzIzMxK4yJkZmalcREyM7PSuAiZmVlpXITMzKw0LkJmZlYaFyEzMyuNvydk1kff+MKPWtbXmZf/Zcv6MmsFFyGzLcTF/+uElvV13vdubllftmXz5TgzMytNWxYhSeMlPSGpU9LUsvMxM2tXbXc5TtIA4Crgw0AXcL+kORHxaLmZ/fk59N8ObUk/vzzrly3px8xar+2KEHAw0BkRKwAkzQImAi5CZluICy64YIvsa0vUjkVoGLAyt94FHFJSLmZblMcuvr1lfb3rvCNb1tefs/1unteyvh4+4ejN3kcR0YRU+i9JJwJHR8TfpPVPAAdHxFm5NlOAKWn1HcATfex2N+C5Ph6jr/pDDtA/8ugPOUD/yKM/5AD9I4/+kAP0jzwakcNbI2JoT43a8UyoCxiRWx8OPJNvEBHTgemN6lDSoojoaNTx/lxz6C959Icc+kse/SGH/pJHf8ihv+TRyhzacXTc/cAYSaMlbQOcDMwpOSczs7bUdmdCEbFe0pnAPGAAMCMilpWclplZW2q7IgQQEXOBuS3ssmGX9vqgP+QA/SOP/pAD9I88+kMO0D/y6A85QP/Io2U5tN3ABDMz6z/a8Z6QmZn1Ey5CDSTpnZLukfSKpHPqtBstaaGk5ZJuTAMkGtH/dpLuk/SwpGWSvlylzbapz86Uw6gG9T1D0mpJj+RiQyTNT7/nfEmDa+w7KbVZLmlSg3O4UdJD6fWUpIdq7NuwqZwkjZB0h6TH0vtwdrft50gKSbvV2L/Pf49anwVJZ6bfsWb/jcqhhzyOkvRAel9+IentNfY/N+X7hKTN/xLKpscaIOlBST9O69dKejL3+Xhvjf0a9bd4StLS1NeiFLtM0uOSlkj6gaRBNfZt5OezWh77pf93LZX0I0k7NzuPDSLCrwa9gN2Bg4CLgXPqtJsNnJyWvwV8ukH9C9gxLW8NLATGdmvzGeBbaflk4MYG9X0YcADwSC72VWBqWp4KXFplvyHAivRzcFoe3Kgcum2/HDi/SnwA8BtgL2Ab4GFg7z78LfYEDkjLOwG/rhyP7OsB84DfArs16+9R67MA7A+MAp6q1n8T3pNaefwaeFfuM3ltlX33Tu/FtsDo9B4N6MP78nngP4Efp/VrgRN62KeRf4s3/M2BccDAtHxpjf9GGv35rJbH/cDhafl04KJm51F5+UyogSJidUTcD/x3rTaSBBwJVObCnwkc16D+IyL+kFa3Tq/uN/0mpj5JORyVcupr33cDa+v0Vev3PBqYHxFrI2IdMB8Y38AcgA1/95OAG6ps3jCVU0S8ClSmcuqViFgVEQ+k5ZeAx8hm6gC4Avgib3xfKhry96j1WYiIByPiqR52b+R7UuszGUDlX9u70O27eslEYFZEvBIRTwKdZO/VZpM0HPgI8J3N3LVhf4tqIuJnEbE+rd5L9r3F7hr6+azhHcDdaXk+8FetysNFqPV2BV7IffC62Pg/qD5LlxweAlaT/cezsFuTDdMWpRxeTDk1wx4RsSr1tYrsTLG7atMoNezvkfNB4NmIWN7KHNLlzv2BhZImAL+LiIfr7NKwXAp8FpqeQ508/gaYK6kL+ARwSZPz+DpZ8X+9W/zidCnsCknbNjmHAH4mabGyWVm6Ox24rck51MrjEWBCWj6RTb/Q36w8ABehMlQ762jYEMWIeC0i3kv2L6qDJe3byv57oVX5fJzqZ0FNy0HSjsD3gc8B64HzgPN72q1RuRT4LDQ9hzp5/B1wbEQMB74LfK1ZeUj6KLA6IhZ323Qu8E6yS+hDgC81K4fk0Ig4ADgGOEPSYbkczyP7jFzf5Bxq5XF6Wl5Mdgn51RbkAbgI9ZmkM3I3Nt9SYJfngEGSKt/ResO0QY0QES8Ad/LGSwcbpi1KOexCjUtYDfCspD1TX3uS/Uu4ux6nUeqr9HseD9xYo0nDc5C0NVkBuj4ibgHeRnZf42FJT6U+HpD05mbnUuezUEtT3pNcHscA++XOzG4E3t/EPA4FJqS/+yzgSEnfS5dNIyJeISuE1S71NexvERHPpJ+rgR9U+kuDHT4KnBLp5kuzcqiVR0Q8HhHjIuJAsn+s/abZeeQT8qvBL+AC6g9MuIlNByZ8pkH9DgUGpeXtgf8LfLRbmzPYdGDC7Ab+3qPYdGDCZWw6MOGrVfYZAjxJdtN3cFoe0qgcUmw8cFedfQaS3XAezcYbrvv0IQcB1wFfr9PmKWoPTOjz36Onz0Kt/hv9ntTKg+wfY3+R4pOB71fZdx82HZiwgj4MTEjHPIKNAxP2zL1fXwcuaeL7sQOwU275V+lzOZ7sMTJDW/H5rJPH7im2Vfrsnt7s/042HLevB/BrkzfpzWT/Wvg98EJa3jltmwu8JS3vBdxHdqP1JmDbBvX/HuBBYAnZNd7zU/xCYEJa3i712Zly2KtBfd8ArCIblNGV/seyK7AAWJ5+DkltO4Dv5PY9PeXTCZzWyBxS/FrgU93avgWYm1s/lmzE1m+A8/r4t/gA2WWKJcBD6XVstzZPkYpAM/4edT4Ln01/m/Vk/4r9TpPfk1p5fAxYmv5Hdmflc0h2X+LC3P7npffkCeCYBnxOj2BjEbo95fAI8D02juJrxvuxV/pdHwaWVT5j6Zgrc5+Tyj8Qm/L5rJPH2en4vya7P6dm5pF/ecYEMzMrje8JmZlZaVyEzMysNC5CZmZWGhchMzMrjYuQmZmVxkXIrMkk/aHnVmbtyUXIzMxK4yJk1iKSdpS0ID1HZ6mkiSk+Stmzh/49PXPnZ5K2T9sOShNs3pOePfNIiv9vSd/IHfvHko5Iy1dLWqRuz5SSdGx6ds0vJF2Ze67ODsqexXR/et5Oo2doNqvJRcisdf4EfCyyySM/BFyee4zGGOCqiNiHbLaNylT63yWb7eF9wGsF+zkvIjrIZis4XNJ7JG0HfJts1oEPkE2ns6E9cHtEHJTyukzSDr3/Nc2KcxEyax0B/yRpCfBzsmnw90jbnoyIylNfFwOj0lM2d4o60d04AAABg0lEQVSIX6X4fxbs5yRJD5BNl7MP2cPh3gmsiOy5PLDpjOLjgKnpcQt3kk3tNHJzfzmz3hjYcxMza5BTyM5ADoyI/06zOm+Xtr2Sa/ca2WSf9R42uJ5N/xG5HWSPjgfOAQ6KiHWSrk3b6h1LwF9FxBPFfxWzxvCZkFnr7EL2XJv/lvQh4K31Gkf2JM+XJI1NoZNzm58C3itpK0kj2PgYgp2BPwIvStqD7LEJAI8De6WH7AH8de5Y84CzKpcGJe3fi9/NrFd8JmTWOtcDP5K0iGzG5McL7DMZ+HdJfyS7VPZiiv+S7LEClVmgK48Tf1jSg2QzJK9I7YiI/yfpM8BPJT1HNoN6xUVkjzJYkgrRU2SPWzBrOs+ibdaPSdoxIv6QlqeSPQPn7L4cKxWaq4DlEXFFA9M122y+HGfWv30kPbX3EeCDwFf6cKxPpsEHy8guDX67EQma9YXPhMzMrDQ+EzIzs9K4CJmZWWlchMzMrDQuQmZmVhoXITMzK42LkJmZleb/A1y9yqsnXbjyAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(songs.language);\n",
    "plt.xlabel(\"language\");\n",
    "plt.ylabel(\"Number of occurrences\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       " 52.0    1336694\n",
       "-1.0      639467\n",
       " 3.0      106295\n",
       " 17.0      92518\n",
       " 24.0      41744\n",
       " 31.0      39201\n",
       " 10.0      15482\n",
       " 45.0      14435\n",
       " 59.0       8098\n",
       " 38.0       2385\n",
       "Name: language, dtype: int64"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "songs[\"language\"].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. members数据探索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>msno</th>\n",
       "      <th>city</th>\n",
       "      <th>bd</th>\n",
       "      <th>gender</th>\n",
       "      <th>registered_via</th>\n",
       "      <th>registration_init_time</th>\n",
       "      <th>expiration_date</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>XQxgAYj3klVKjR3oxPPXYYFp4soD4TuBghkhMTD4oTw=</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7</td>\n",
       "      <td>20110820</td>\n",
       "      <td>20170920</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>UizsfmJb9mV54qE9hCYyU07Va97c0lCRLEQX3ae+ztM=</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7</td>\n",
       "      <td>20150628</td>\n",
       "      <td>20170622</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>D8nEhsIOBSoE6VthTaqDX8U6lqjJ7dLdr72mOyLya2A=</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4</td>\n",
       "      <td>20160411</td>\n",
       "      <td>20170712</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>mCuD+tZ1hERA/o5GPqk38e041J8ZsBaLcu7nGoIIvhI=</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9</td>\n",
       "      <td>20150906</td>\n",
       "      <td>20150907</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>q4HRBfVSssAFS9iRfxWrohxuk9kCYMKjHOEagUMV6rQ=</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4</td>\n",
       "      <td>20170126</td>\n",
       "      <td>20170613</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                           msno  city  bd gender  \\\n",
       "0  XQxgAYj3klVKjR3oxPPXYYFp4soD4TuBghkhMTD4oTw=     1   0    NaN   \n",
       "1  UizsfmJb9mV54qE9hCYyU07Va97c0lCRLEQX3ae+ztM=     1   0    NaN   \n",
       "2  D8nEhsIOBSoE6VthTaqDX8U6lqjJ7dLdr72mOyLya2A=     1   0    NaN   \n",
       "3  mCuD+tZ1hERA/o5GPqk38e041J8ZsBaLcu7nGoIIvhI=     1   0    NaN   \n",
       "4  q4HRBfVSssAFS9iRfxWrohxuk9kCYMKjHOEagUMV6rQ=     1   0    NaN   \n",
       "\n",
       "   registered_via  registration_init_time  expiration_date  \n",
       "0               7                20110820         20170920  \n",
       "1               7                20150628         20170622  \n",
       "2               4                20160411         20170712  \n",
       "3               9                20150906         20150907  \n",
       "4               4                20170126         20170613  "
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "members = pd.read_csv(dpath + \"members.csv\")\n",
    "members.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(34403, 7)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "members.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "34403"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(members[\"msno\"].unique())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### members特征分布"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看members缺失值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "msno                          0\n",
       "city                          0\n",
       "bd                            0\n",
       "gender                    19902\n",
       "registered_via                0\n",
       "registration_init_time        0\n",
       "expiration_date               0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "members.apply(lambda x:sum(x.isnull()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### city分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(members.city);\n",
    "plt.xlabel(\"city\");\n",
    "plt.ylabel(\"Number of occurrences\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1     19445\n",
       "13     3395\n",
       "5      2634\n",
       "4      1732\n",
       "15     1525\n",
       "22     1467\n",
       "6       913\n",
       "14      708\n",
       "12      491\n",
       "9       309\n",
       "8       289\n",
       "11      285\n",
       "18      259\n",
       "10      216\n",
       "21      213\n",
       "3       204\n",
       "17      152\n",
       "7        93\n",
       "16       35\n",
       "20       27\n",
       "19       11\n",
       "Name: city, dtype: int64"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "members[\"city\"].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### bd分布  \n",
    "bd值默认为0的较多，该如何操作，用中位数填充？还是归类为其他？   \n",
    "如何查看离群点，离群点如何剔除？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(members.bd);\n",
    "plt.xlabel(\"bd\");\n",
    "plt.ylabel(\"Number of occurrences\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     19932\n",
       "22      751\n",
       "27      750\n",
       "24      740\n",
       "26      719\n",
       "25      716\n",
       "23      712\n",
       "28      688\n",
       "21      685\n",
       "29      661\n",
       "20      631\n",
       "30      602\n",
       "19      507\n",
       "31      491\n",
       "32      466\n",
       "18      466\n",
       "33      416\n",
       "34      404\n",
       "17      398\n",
       "35      380\n",
       "36      341\n",
       "Name: bd, dtype: int64"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "members[\"bd\"].value_counts()[:21]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### gender分布  \n",
    "gender缺失值较多，且有值的样本分布均衡，是否要舍弃该特征？还是把缺失值单独编码，分为有缺失和无缺失？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(members.gender);\n",
    "plt.xlabel(\"gender\");\n",
    "plt.ylabel(\"Number of occurrences\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### registered_via分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(members.registered_via);\n",
    "plt.xlabel(\"registered_via\");\n",
    "plt.ylabel(\"Number of occurrences\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4     11392\n",
       "7      9433\n",
       "9      8628\n",
       "3      4879\n",
       "13       70\n",
       "16        1\n",
       "Name: registered_via, dtype: int64"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "members[\"registered_via\"].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "registration_init_time和expiration_date连续型时间特征如何处理？  \n",
    "截掉month/day，只保留year,然后one-hot，或者直接当作连续值分桶？  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "缺失值处理  \n",
    "from sklearn.preprocessing import Imputer  \n",
    "imp = Imputer(missing_values='NaN', strategy='mean', axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import Imputer"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
